﻿using System;
using System.Collections.Generic;
using System.Data;

namespace DSA4_Heldenerstellung
{
    public class Kultur_C : IComparable<Kultur_C>
    {
        public Kultur_C(DataRow Data)
        {
            Name = Data["Kultur_Name"].ToString();
            Grundpunkte = Convert.ToInt16(Data["Grundpunkte"].ToString());
            InitModifikatoren(Data["Modifikatoren"].ToString());
            InitAutoVorteile(Data["Automatische_Vorteile"].ToString());
            InitAutoNachteile(Data["Automatische_Nachteile"].ToString());
            InitEmpfohleneVorteile(Data["Empfohlene_Vorteile"].ToString());
            InitEmpfohleneNachteile(Data["Empfohlene_Nachteile"].ToString());
            InitUngeeigneteVorteile(Data["Ungeeignete_Vorteile"].ToString());
            InitUngeeigneteNachteile(Data["Ungeeignete_Nachteile"].ToString());
            InitProfessionen(Data["Professionen"].ToString());
            InitTalente(Data["Talente"].ToString());
            InitSonderfertigkeiten(Data["Sonderfertigkeiten"].ToString());
            InitVerbilligteSonderfertigkeiten(Data["Verbilligte_Sonderfertigkeiten"].ToString());
            PortraitPfad = Data["Portrait"].ToString();
            InitInfoBesonderheiten(Data["Info"].ToString(), Data["Besonderheiten"].ToString());

        }

        public Dictionary<String, Int16> ModifikatorDict { get; set; }

        public Dictionary<String, Int16> TalenteDict { get; set; }

        public List<string> AutoVorteile { get; set; }

        public List<string> AutoNachteile { get; set; }

        public List<string> EmpfohleneVorteile { get; set; }

        public List<string> EmpfohleneNachteile { get; set; }

        public List<string> UngeeigneteVorteile { get; set; }

        public List<string> UngeeigneteNachteile { get; set; }

        public List<string> Professionen { get; set; }

        public List<string> Sonderfertigkeiten { get; set; }

        public List<string> VerbilligteSonderfertigkeiten { get; set; }

        public String PortraitPfad { get; set; }

        public String Info { get; set; }

        public String Besonderheiten { get; set; }

        public String Name { get; set; }

        public Int16 Grundpunkte { get; set; }

        private void InitInfoBesonderheiten(String _Info, String _Besonderheiten)
        {
            this.Info = _Info;
            if (this.Info.Length > 2)
            {
                this.Info = this.Info.Remove(0, 2);
                this.Info = this.Info.Replace("        ", "");
            }

            this.Besonderheiten = _Besonderheiten;
            if (this.Besonderheiten.Length > 2)
            {
                this.Besonderheiten = this.Besonderheiten.Remove(0, 2);
                this.Besonderheiten = this.Besonderheiten.Replace("        ", "");
            }
        }


        private void InitModifikatoren(String _Modifikatoren)
        {
            this.ModifikatorDict = new Dictionary<string, short>();

            if (_Modifikatoren == "")
                return;

            String[] modifikatoren = _Modifikatoren.Split(';');

            foreach (String item in modifikatoren)
            {
                String[] eigenschaft_mod = item.Split('|');
                this.ModifikatorDict.Add(eigenschaft_mod[0], Convert.ToInt16(eigenschaft_mod[1]));
            }
        }

        private void InitTalente(String _Talente)
        {
            this.TalenteDict = new Dictionary<string, short>();

            if (_Talente == "")
                return;

            String[] talente = _Talente.Split(';');

            foreach (String item in talente)
            {
                String[] talent_mod = item.Split('|');
                this.TalenteDict.Add(talent_mod[0], Convert.ToInt16(talent_mod[1]));
            }
        }

        private void InitAutoVorteile(String _AutomatischeVorteile)
        {
            String[] vorteil = _AutomatischeVorteile.Split(';');

            this.AutoVorteile = new List<string>();

            foreach (String item in vorteil)
            {
                this.AutoVorteile.Add(item);
            }
        }

        private void InitAutoNachteile(String _AutomatischeNachteile)
        {
            String[] nachteil = _AutomatischeNachteile.Split(';');

            this.AutoNachteile = new List<string>();

            foreach (String item in nachteil)
            {
                this.AutoNachteile.Add(item);
            }
        }

        private void InitEmpfohleneVorteile(String _EmpfohleneVorteile)
        {
            String[] vorteil = _EmpfohleneVorteile.Split(';');

            this.EmpfohleneVorteile = new List<string>();

            foreach (String item in vorteil)
            {
                this.EmpfohleneVorteile.Add(item);
            }
        }

        private void InitEmpfohleneNachteile(String _EmpfohleneNachteile)
        {
            String[] nachteil = _EmpfohleneNachteile.Split(';');

            this.EmpfohleneNachteile = new List<string>();

            foreach (String item in nachteil)
            {
                this.EmpfohleneNachteile.Add(item);
            }
        }

        private void InitUngeeigneteVorteile(String _UngeeigneteVorteile)
        {
            String[] vorteil = _UngeeigneteVorteile.Split(';');

            this.UngeeigneteVorteile = new List<string>();

            foreach (String item in vorteil)
            {
                this.UngeeigneteVorteile.Add(item);
            }
        }

        private void InitUngeeigneteNachteile(String _UngeeigneteNachteile)
        {
            String[] nachteil = _UngeeigneteNachteile.Split(';');

            this.UngeeigneteNachteile = new List<string>();

            foreach (String item in nachteil)
            {
                this.UngeeigneteNachteile.Add(item);
            }
        }

        private void InitProfessionen(String _Professionen)
        {
            String[] profession = _Professionen.Split(';');

            this.Professionen = new List<string>();

            foreach (String item in profession)
            {
                this.Professionen.Add(item);
            }
        }

        private void InitSonderfertigkeiten(String _Sonderfertigkeiten)
        {
            String[] sonderfertigkeit = _Sonderfertigkeiten.Split(';');

            this.Sonderfertigkeiten = new List<string>();

            foreach (String item in sonderfertigkeit)
            {
                this.Sonderfertigkeiten.Add(item);
            }
        }

        private void InitVerbilligteSonderfertigkeiten(String _VerbilligteSonderfertigkeiten)
        {
            String[] sonderfertigkeit = _VerbilligteSonderfertigkeiten.Split(';');

            this.VerbilligteSonderfertigkeiten = new List<string>();

            foreach (String item in sonderfertigkeit)
            {
                this.VerbilligteSonderfertigkeiten.Add(item);
            }
        }

        public int CompareTo(Kultur_C andere)
        {
            return Name.CompareTo(andere.Name);
        }
    }
}
